/*
 * wk_queue_array.h
 *
 *  Created on: 2012-3-11
 *      Author: tianmax
 */

#ifndef __WK_QUEUE_ARRAY_H__
#define __WK_QUEUE_ARRAY_H__

#include "wk_queue_array_types.h"

/*********************************************************************/
/**
 * 初始化数组对列
 */
extern WQueueArray* wk_queue_array_init(int initsize);

/**
 * 销毁队列
 */
extern void wk_queue_array_destroy(WQueueArray* queue);
/*常用操作函数**********************************************************/

/**
 * 获取数组对列的的容量
 */
extern int wk_queue_array_size(WQueueArray* queue);

/**
 * 获取数组对列中的元素的多少
 */
extern int wk_queue_array_count(WQueueArray* queue);

/**
 * 清空对列中的所有内容，使其成为一个空对列
 */
extern int wk_queue_array_clear(WQueueArray* queue);

/**
 * 对列是否满
 */
extern int wk_queue_array_isfull(WQueueArray* queue);

/**
 * 判断对列是否空
 */
extern int wk_queue_array_isempty(WQueueArray* queue);
/********************************************************************/
/**
 * 将元素e入列
 */
extern void wk_queue_array_enqueue(WQueueArray* queue,WPElement e);

/*
 * 将对一个元素出列不返回
 */
extern void wk_queue_array_dequeue(WQueueArray* queue);

/**
 * 获得对列首部元素
 */
extern WPElement wk_queue_array_front(WQueueArray* queue);

/**
 * 获得对列首部元素并且出列
 */
extern WPElement wk_queue_array_dequeue_front(WQueueArray* queue);

/**
 * 获得对列尾部元素
 */
extern WPElement wk_queue_array_rear(WQueueArray* queue);

/*******************************************************************/
/**
 * 遍历元素相关
 * ctx上下文
 */
extern void* wk_queue_array_iterate(WQueueArray* queue,wk_element_iterate_do iterate_do,void* ctx);
/******************************************************************/
/**
 * wk_slist调试函数
 */
extern void wk_queue_array_debug();
/*******************************************************************/


#endif /* WK_QUEUE_ARRAY_H_ */
